iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0
Odoo

Odoo開發系列 第 27

[Day27] odoo14 - ir.sequence(序號)介紹

  • 分享至 

  • xImage
  •  

在odoo中,以銷售模組為例,建立每張銷售訂單時都會自動編號,讓單號不會有重複的情況發生,單號除了識別用,也可以用來在不同模組中查找相對應的單據,在odoo中有許多應用的情境。
因此今天就要來介紹如何在程式中設定單號採自動編號的方式產生,下面來詳細介紹。

以銷售模組為例,範例如下:

<odoo>
    <data noupdate="1">

        <!-- Sequences for sale.order -->
        <record id="seq_sale_order" model="ir.sequence">
            <field name="name">Sales Order</field>
            <field name="code">sale.order</field>
            <field name="prefix">S</field>
            <field name="padding">5</field>
            <field name="company_id" eval="False"/>
        </record>

    </data>
</odoo>
  • id:序號的id,不重複即可。
  • name:序號的名稱,僅作識別用。
  • code:要使用這個序號來做編號時,定義的key值,不可重複。
  • prefix:可以在序號前增加固定的前綴,也可使用日期當作前綴。
  • suffix:可以在序號後增加固定的後綴,也可使用日期當作後綴。
  • padding:可以在序號前補上0,讓每張單據的編號為固定長度。
  • company:若有設置多公司時,可以將此序號設置到指定的公司。
  • number_increment:下一個序號依此欄位設定的值來做增加,若未設定則為1。

以上參數都設置完後就設定好序號的data了,接下來介紹如何在py檔應用。
範例如下:

vals['name'] = self.env['ir.sequence'].next_by_code('sale.order')

根據範例可以發現,next_by_code傳入的參數為前面data中設定的code,只要替換掉該參數,即可取出需要的序號,取出後可將該筆資料的name直接預設為此序號,再走原生的create(),即可在創建單據時自動編碼單號,避免人員手動輸入造成單號重複。

序號的相關設置也可在系統上的「設定/序號」來做查看,如下圖。
https://ithelp.ithome.com.tw/upload/images/20231012/20163263zKqaQpWS6C.png

關於序號就先介紹到這邊,讓我們明天見。


上一篇
[Day26] odoo14 - 原生翻譯修改
下一篇
[Day28] odoo14 - 留言區介紹(一)
系列文
Odoo開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言